package com.example.forum.services;

import com.example.forum.model.Message;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

public interface IMessageService {
    /**
     * date: 2024/09/19 15:38<br/>
     * Description: 发送站内信
     *
     * @author: jmy <br/>
     */
    void create(Message message);


    /**
     * date: 2024/09/19 21:01<br/>
     * Description:
     * 根据用户id查询用户未读数
     *
     * @author: jmy <br/>
     */
    int selectUnreadCount(Long receiveUserId);

    /**
     * date: 2024/09/20 10:15<br/>
     * Description: 根据 被接受人的用户id 查询被接受人的站内信
     *
     * @param receiveUserId 接收者用户id
     * @author: jmy <br/>
     */
    List<Message> selectByReceiveUserId(Long receiveUserId);


    /**
     * date: 2024/09/20 11:55<br/>
     * Description:根据id查询站内信
     *
     * @param id 站内信id
     * @return 站内信对象
     * @author: jmy <br/>
     */
    Message selectById(Long id);

    /**
     * date: 2024/09/20 11:03<br/>
     * Description: 更新指定站内信状态
     *
     * @param id    zhang
     * @param state 目标状态
     * @author: jmy <br/>
     */
    int updateStateById(Long id, Byte state);

    /**
     * date: 2024/09/20 16:32<br/>
     * Description: 回复站内信
     *
     * @param repliedId 要回复的站内信id
     * @param message   回复的信息（包含回复内容，接收人id ，发送人id）
     * @author: jmy <br/>
     */
    @Transactional
    void reply(Long repliedId, Message message);
}